home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / t_os / 8dot_prn / 8dot_prn.bas next >
BASIC Source File  |  1993-07-08  |  4KB  |  116 lines

  1. 10 '
  2. 20 '
  3. 30 ' - テキストファイルを、MSXのプリンターに出力するプログラム-
  4. 40 '
  5. 50 '
  6. 60 '
  7. 70 DEFINT A-Z:DIM P$(2),E$(639)
  8. 80 OPEN "LPT0:" FOR OUTPUT AS #2
  9. 90 '
  10. 100 GOSUB *FI
  11. 110 CLS
  12. 120 LOCATE 0,20:PRINT FI$
  13. 130 OPEN FI$  FOR INPUT AS #1
  14. 140 LINE INPUT #1,A$
  15. 150 IF LEN(A$)>80 THEN P$=LEFT$(A$,80) :A$=RIGHT$(A$,LEN(A$)-80) :GOSUB *INJI  :GOTO 150 ELSE P$=A$ :GOSUB *INJI
  16. 160 IF NOT EOF(1) THEN 140
  17. 170 CLOSE:CLS
  18. 180 END
  19. 190 '
  20. 200 *INJI
  21. 210 IF P$="" THEN PRINT #2:RETURN
  22. 220 IF LEN(P$)>40 THEN P(1)=40 :P(2)=LEN(P$)-40 ELSE P(1)=LEN(P$):P(2)=0
  23. 230 '
  24. 240 '
  25. 250 LINE(0,0)-(31,479),PSET,0,BF
  26. 260 SYMBOL (15,0),P$,1,1,,3,,0
  27. 270 SYMBOL (31,-320),P$,1,1,,3,,0
  28. 280 '
  29. 290 PRINT #2, CHR$(27);"T14";    :'改行幅  14/144ヲ
  30. 300 FOR J=1 TO 2
  31. 310  FOR X=0 TO P(J)*8
  32. 320    GET@ (16*J-8,X)-(16*J-1,X),D1
  33. 330    IF D1(0)=0 OR D1(0)=26 THEN GOSUB *ZERO ELSE K=K+1:TMP$=TMP$+CHR$(D1(0))
  34. 340 NEXT X,J
  35. 350 FOR I=0 TO L-1
  36. 360  PRINT #2,E$(I);
  37. 370 NEXT:PRINT #2:L=0
  38. 380 '
  39. 390 PRINT #2, CHR$(27);"A";      :'改行幅    1/6ヲ
  40. 400 FOR J=1 TO 2
  41. 410   FOR X=0 TO P(J)*8
  42. 420    GET@ (16*(J-1),X)-(16*J-9,X),D2
  43. 430    IF D2(0)=0 OR D2(0)=26 THEN GOSUB *ZERO ELSE K=K+1:TMP$=TMP$+CHR$(D2(0))
  44. 440  NEXT X,J
  45. 450 FOR I=0 TO L-1
  46. 460  PRINT #2,E$(I);
  47. 470 NEXT:PRINT #2:L=0
  48. 480 RETURN
  49. 490 '
  50. 500 '
  51. 510 *ZERO
  52. 520 '
  53. 530 '       グラフィックデーターが &H00 か &H1A の時の処理
  54. 540 '
  55. 550 XZ=X+1+(J-1)*320
  56. 560 IF K<>0 THEN E$(L)=CHR$(27)+"S0"+RIGHT$(STR$(K\100),1)+RIGHT$(STR$((K MOD 100)\10),1)+RIGHT$(STR$(K),1)+TMP$:TMP$="":L=L+1
  57. 570 IF K=0 AND L>1 THEN L=L-1
  58. 580 E$(L)=CHR$(27)+"F0"+RIGHT$(STR$(XZ\100),1)+RIGHT$(STR$((XZ MOD 100)\10),1)+RIGHT$(STR$(XZ),1)
  59. 590 K=0:L=L+1
  60. 600 RETURN
  61. 610 '
  62. 620 *FI
  63. 630 '
  64. 640 '    ファイル選択サブルーチン
  65. 650 '
  66. 660 '           返す値 FI$ ファイルネーム 
  67. 670 '
  68. 680 '
  69. 690 CLS:PRINT "A:B:C:D:E:F:G:H:I:Q:"
  70. 700 W=2:MAX=20:MAY=0:MIX=0:MIY=0:GOSUB *SEL
  71. 710 '
  72. 720 SHELL SEL$
  73. 730 CLS:FILES
  74. 740 LOCATE 0,CSRLIN-1:PRINT"                              ";
  75. 750 LOCATE 0,CSRLIN-1:PRINT"                              "
  76. 760 PRINT "DRIVE CHENGE"
  77. 770 W=26:MAX=0:MAY=24:MIX=0:MIY=0:GOSUB *SEL
  78. 780 '
  79. 790 IF RIGHT$(SEL$,10)<>"--<DIR>-- " THEN 830
  80. 800  IF LEFT$(SEL$,10)="         ." THEN SHELL "cd .." :GOTO 730
  81. 810  IF LEFT$(SEL$,1)<>"."           THEN SHELL"cd "+LEFT$(SEL$,8)
  82. 820 GOTO 730
  83. 830 '
  84. 840 FI$=LEFT$(SEL$,12)
  85. 850 IF FI$="DRIVE CHENGE"  THEN GOTO 680
  86. 860 IF FI$="            " OR LEFT$(FI$,1)=CHR$(0) THEN 770
  87. 870 '
  88. 880 FI$=LEFT$(FI$,8)+"."+RIGHT$(FI$,3)
  89. 890 RETURN 
  90. 900 '
  91. 910 '
  92. 920 '
  93. 930 *SEL
  94. 940 '
  95. 950 '    文字列選択サブルーチン
  96. 960 '         引数   W    文字列の長さ(半角で)  
  97. 970 '                MAX  右端 
  98. 980 '                MAY  下端
  99. 990 '                MIX  左端
  100. 1000 '                MIY  上端
  101. 1010 '         返す値 SEL$ 選択された文字列
  102. 1020 '
  103. 1030 CSX=MIX:CSY=MIY:SEL$=""
  104. 1040 LINE(CSX*8,CSY*19)-((CSX+W)*8-1,CSY*19+15),PSET,1,B
  105. 1050 A$=INKEY$
  106. 1060 IF A$="" THEN 1050 
  107. 1070 IF A$=CHR$(&H1E) AND CSY>MIY   THEN VY=-1 :GOTO 1120
  108. 1080 IF A$=CHR$(&H1C) AND CSX+W<MAX THEN VX=W  :GOTO 1120
  109. 1090 IF A$=CHR$(&H1F) AND CSY<MAY   THEN VY=1  :GOTO 1120
  110. 1100 IF A$=CHR$(&H1D) AND CSX>MIX   THEN VX=-W :GOTO 1120
  111. 1110 IF A$=CHR$(13) OR A$=CHR$(32) THEN                                              FOR SI=0 TO W-1:SEL$=SEL$+CHR$(SCREEN(CSX+SI,CSY)):LINE(CSX*8,CSY*19)-((CSX+W)*8-1,CSY*19+15),PSET,0,B:NEXT:RETURN
  112. 1120 LINE(CSX*8,CSY*19)-((CSX+W)*8-1,CSY*19+15),PSET,0,B
  113. 1130 CSX=CSX+VX:CSY=CSY+VY:VX=0:VY=0
  114. 1140 GOTO 1040
  115. 1150 '
  116.